@mixin zoom-animation(
  $direction: 'top',
  $scaleStart: scaleY(0),
  $scaleEnd: scaleY(1),
  $origin: center top
) {
  .zoom-in-#{$direction}-enter {
    transform: $scaleStart;
    opacity: 0;
  }
  .zoom-in-#{$direction}-enter-active {
    transform: $scaleEnd;
    transform-origin: $origin;
    opacity: 1;
    transition: transform 300ms cubic-bezier(.23, 1, .32, 1) 100ms,
      opacity 300ms cubic-bezier(.23, 1, .32, 1) 100ms;
  }
  .zoom-in-#{$direction}-exit {
    opacity: 1;
  }
  .zoom-in-#{$direction}-exit-active {
    transform: $scaleStart;
    transform-origin: $origin;
    opacity: 0;
    transition: transform 300ms cubic-bezier(.23, 1, .32, 1) 100ms,
      opacity 300ms cubic-bezier(.23, 1, .32, 1) 100ms;
  }
}
